package com.lsh.config;

/**
 * @author ：LiuShihao
 * @date ：Created in 2020/7/8 9:51 上午
 * @desc ：ThreadLocal保存数据源，保持线程隔离
 */

/**
 * contextHolder保存一个线程安全的 dataBaseType
 * @author xuyp
 *
 */
public class DatabaseContextHolder {
    public DatabaseContextHolder(){
        System.out.println("加载DatabaseContextHolder");
    }
    //本地线程保存数据源
    private static final ThreadLocal<DataBaseType> contextHolder = new ThreadLocal<>();

    public enum DataBaseType {//数据源类型
        DataBase1,
        DataBase2
    }
    /**
     * 获取本地线程的数据源，这里只是数据源的key
     * @return
     */
    public static DataBaseType getDataBaseType() {
        return contextHolder.get();
    }



    /**
     * 设置线程数据源
     */
    public static void setDataBaseType(DataBaseType dbType) {
        contextHolder.set(dbType);
    }


    /**
     * 清除数据源
     */
    public static void clearDataSource() {
        contextHolder.remove();
    }
}